package com.zzp.message;

import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Component
@AllArgsConstructor
public class WebsocketMessage {

    private final SimpMessagingTemplate messagingTemplate;

    /**
     * 发送到所有订阅/topic/chat的客户端
     * @param message 消息
     */
    public void sendBroadcast(String message) {
        messagingTemplate.convertAndSend("/topic/chat", message);
    }


    /**
     * 发送给指定用户（需要用户认证）
     * @param username 用户信息
     * @param message 消息
     */
    public void sendToUser(String username, String message) {
        messagingTemplate.convertAndSendToUser(
                username,
                "/queue/private",
                message
        );
    }

    @MessageMapping("/chat.send") // 对应/app/chat.send
    @SendTo("/topic/chat") // 返回结果将广播到该地址
    public ChatMessage handleMessage(@Payload ChatMessage message) {
        message.setTimestamp(LocalDateTime.now());
        System.out.println("处理了消息");
        return message; // 自动转发到/topic/chat
    }


}
